// license-header java merge-point
/**
 * This is only generated once! It will never be overwritten.
 * You can (and have to!) safely modify it by hand.
 */
package fr.upstlse.glre.business.service.user;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import fr.upstlse.glre.business.domain.user.Professeur;
import fr.upstlse.glre.business.domain.user.ProfesseurDao;
import fr.upstlse.glre.business.vo.user.ProfesseurSearchCriteriaVO;
import fr.upstlse.glre.business.vo.user.ProfesseurVO;

/**
 * @see fr.upstlse.glre.business.service.user.ProfesseurService
 */
public class ProfesseurServiceImpl extends
		fr.upstlse.glre.business.service.user.ProfesseurServiceBase {

	/**
	 * @see fr.upstlse.glre.business.service.user.ProfesseurService#createProfesseur(fr.upstlse.glre.business.vo.user.ProfesseurVO)
	 */
	protected long handleCreateProfesseur(
			fr.upstlse.glre.business.vo.user.ProfesseurVO pProfesseurVO)
			throws java.lang.Exception {
		Professeur lProfesseur = getProfesseurDao().professeurVOToEntity(
				pProfesseurVO);
		ProfesseurVO lProfesseurVO = (ProfesseurVO) getProfesseurDao().create(
				ProfesseurDao.TRANSFORM_PROFESSEURVO, lProfesseur);
		return lProfesseurVO.getId();
	}

	/**
	 * @see fr.upstlse.glre.business.service.user.ProfesseurService#deleteProfesseur(fr.upstlse.glre.business.vo.user.ProfesseurVO)
	 */
	protected void handleDeleteProfesseur(
			fr.upstlse.glre.business.vo.user.ProfesseurVO pProfesseurVO)
			throws java.lang.Exception {
		Professeur lProfesseur = getProfesseurDao().professeurVOToEntity(
				pProfesseurVO);
		getProfesseurDao().remove(lProfesseur);
	}

	/**
	 * @see fr.upstlse.glre.business.service.user.ProfesseurService#getById(long)
	 */
	protected fr.upstlse.glre.business.vo.user.ProfesseurVO handleGetById(
			long pProfesseurId) throws java.lang.Exception {
		ProfesseurVO lProfesseurVO = (ProfesseurVO) getProfesseurDao().load(
				ProfesseurDao.TRANSFORM_PROFESSEURVO, pProfesseurId);
		return lProfesseurVO;
	}

	/**
	 * @see fr.upstlse.glre.business.service.user.ProfesseurService#updateProfesseur(fr.upstlse.glre.business.vo.user.ProfesseurVO)
	 */
	protected void handleUpdateProfesseur(
			fr.upstlse.glre.business.vo.user.ProfesseurVO pProfesseurVO)
			throws java.lang.Exception {
		Professeur lProfesseur = getProfesseurDao().professeurVOToEntity(
				pProfesseurVO);
		getProfesseurDao().update(lProfesseur);
	}

	@Override
	protected List handleGetAllProfesseurs() throws Exception {
		Collection<ProfesseurVO> lProfesseurVOs = getProfesseurDao().loadAll(
				ProfesseurDao.TRANSFORM_PROFESSEURVO);
		ArrayList<ProfesseurVO> lProfesseurVOsArrayList = new ArrayList<ProfesseurVO>(
				lProfesseurVOs);
		return lProfesseurVOsArrayList;
	}

	@Override
	protected List handleFindProfesseur(
			ProfesseurSearchCriteriaVO professeurSearchCriteriaVO)
			throws Exception {
		
		List<Professeur> lProfesseurs = getProfesseurDao().findByCriteria(professeurSearchCriteriaVO);
		
		List<ProfesseurVO> lProfesseurVOs = new ArrayList<ProfesseurVO>(lProfesseurs.size());
		for(Professeur lProfesseur : lProfesseurs) {
			ProfesseurVO lProfesseurVO = getProfesseurDao().toProfesseurVO(lProfesseur);
			lProfesseurVOs.add(lProfesseurVO);
		}
		return lProfesseurVOs;
	}

	@Override
	protected ProfesseurVO handleCreateAndGet(ProfesseurVO pProfesseurVO)
			throws Exception {
		Professeur lProfesseur = getProfesseurDao().professeurVOToEntity(
				pProfesseurVO);
		ProfesseurVO lProfesseurVO = (ProfesseurVO) getProfesseurDao().create(
				ProfesseurDao.TRANSFORM_PROFESSEURVO, lProfesseur);
		return lProfesseurVO;
	}

}